package br.gov.cemaden.library.model.observacao;

import br.gov.cemaden.library.model.alerta.Aerodromo;
import br.gov.cemaden.library.model.alerta.Agencia;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 *
 * @author alan
 */
@Entity
@Table(name = "metar", schema = "alerta")
@SequenceGenerator(name = "sequence", sequenceName = "alerta.alerta_metar_sequence", schema = "alerta")
public class Metar implements Serializable {
    
    @Id
    @GeneratedValue(generator = "sequence", strategy = GenerationType.AUTO)
    @Column(name = "id_metar", nullable = false, unique = true)
    private Long id;
    
    @Column
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date atualizacao;
    
    /**
     * Value in millibar (1 mbar = 1 hPa)
     */
    @Column
    private Double pressao;
    
    /**
     * Value in Celsius degrees
     */
    @Column
    private Double temperatura;
    
    @Column
    private String condicaoTempo;
    
    /**
     * Value in mm/hour
     */
    @Column
    private Double precipitacao;
    
    @Column
    private Integer umidade;
    
    /**
     * Value in degrees
     */
    @Column
    private Double direcaoVento;
    
    /**
     * Value in meters/seconds
     */
    @Column
    private Double velocidadeVento;
    
    /**
     * Value in meters
     */
    @Column
    private Integer visibilidade;
    
    @ManyToOne
    @JoinColumn(name = "id_aerodromo", referencedColumnName = "id_aerodromo")
    private Aerodromo aerodromo;
    
    @ManyToOne
    @JoinColumn(name = "id_agencia", referencedColumnName = "id_agencia")
    private Agencia agencia;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Date getAtualizacao() {
        return atualizacao;
    }

    public void setAtualizacao(Date atualizacao) {
        this.atualizacao = atualizacao;
    }

    public Double getPressao() {
        return pressao;
    }

    public void setPressao(Double pressao) {
        this.pressao = pressao;
    }

    public Double getTemperatura() {
        return temperatura;
    }

    public void setTemperatura(Double temperatura) {
        this.temperatura = temperatura;
    }

    public String getCondicaoTempo() {
        return condicaoTempo;
    }

    public void setCondicaoTempo(String condicaoTempo) {
        this.condicaoTempo = condicaoTempo;
    }

    public Double getPrecipitacao() {
        return precipitacao;
    }

    public void setPrecipitacao(Double precipitacao) {
        this.precipitacao = precipitacao;
    }        

    public Integer getUmidade() {
        return umidade;
    }

    public void setUmidade(Integer umidade) {
        this.umidade = umidade;
    }

    public Double getDirecaoVento() {
        return direcaoVento;
    }

    public void setDirecaoVento(Double direcaoVento) {
        this.direcaoVento = direcaoVento;
    }

    public Double getVelocidadeVento() {
        return velocidadeVento;
    }

    public void setVelocidadeVento(Double velocidadeVento) {
        this.velocidadeVento = velocidadeVento;
    }

    public Integer getVisibilidade() {
        return visibilidade;
    }

    public void setVisibilidade(Integer visibilidade) {
        this.visibilidade = visibilidade;
    }        

    public Aerodromo getAerodromo() {
        return aerodromo;
    }

    public void setAerodromo(Aerodromo aerodromo) {
        this.aerodromo = aerodromo;
    }    

    public Agencia getAgencia() {
        return agencia;
    }

    public void setAgencia(Agencia agencia) {
        this.agencia = agencia;
    }        
    
}
